package com.irdstudio.apicenter.frame.util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 
 * Spring bean 工具
 * 
 * <p>
 * 初始化 ApplicationContext以及获取bean 对象
 * 
 * <p>
 * 提供统一的标准的获取 Spring bean 的方法
 * 
 * @author ZhangHao
 * @version 1.0
 * @date 2015-06-04
 * 
 */
public class BeanUtils {

	private static ApplicationContext ac;
	static {
		String[] configLocations = new String[1];
		configLocations[0] = "classpath:applicationContext.xml";
		ac = new ClassPathXmlApplicationContext(configLocations);
	}

	/**
	 * 通过beanId 获取 bean 对象（返回Object)
	 * 
	 * @param beanId
	 * @return
	 */
	public static Object getBean(String beanId) {
		return ac.getBean(beanId);
	}

	/**
	 * 通过beanId 获取 bean 对象（返回指定对象）
	 * 
	 * @param beanId
	 * @param cla
	 * @return
	 */
	public static <T> T getBean(String beanId, Class<T> paramClass) {
		return ac.getBean(beanId, paramClass);
	}

	/**
	 * 通过class 获取 bean 对象（返回指定对象）
	 * 
	 * @param beanId
	 * @param cla
	 * @return
	 */
	public static <T> T getBean(Class<T> paramClass) {
		return ac.getBean(paramClass);
	}

	// public static void checkApplicationContext() throws MaccsException{
	// if (ac == null)
	// throw new
	// MaccsException("ApplicationContext 未进行初始化,请检查 applicationContext.xml 相关配置");
	// }

}
